package cn.com.yx.ms.service;


import cn.com.yx.ms.domain.dbmodel.DevHardwareStand;
import cn.com.yx.ms.domain.dbmodel.DevStandRule;
import cn.com.yx.ms.domain.hardware.HardwareConfig;
import cn.com.yx.ms.domain.program.CatalogModel;
import cn.yx.framework.configuration.ApiCode;
import cn.yx.framework.view.ApiResult;
import io.swagger.annotations.Api;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 应用中心接口
 */
@Component
public interface IHardwareService {

    /**
     * 根据区域和工程标段生成硬件序列号
     * @param areacode
     * @param projectNo
     * @return
     */
    ApiCode generateHardwareSn(String areacode, String projectNo);

    /**
     * 导入施工方板卡序号和站台关联excel
     * @param request
     * @return
     */
    ApiCode importHardWareAndStand(HttpServletRequest request);

    /**
     * 手工录入板卡序号和站台名称
     * @param hardwareno
     * @param standname
     * @return
     */
    ApiCode manualSaveHardWareAndStand(String hardwareno,String standname);

    /**
     * 根据规则库同步硬件站台和设备编号
     * @return
     */
    ApiCode syncHardwareAndEquStore();

    /**
     * 导入施工站台和业务站台规则库
     * @param request
     * @return
     */
    ApiCode importStandRule(HttpServletRequest request);
    /**
     * 查看站台对应规则库
     * @return
     */
    DevStandRule findRule();

    /**
     * 推送设备配置文件(前端异步调用)
     * @param hardwareSn
     * @return
     */
    ApiCode pushDevConfig(String hardwareSn) throws Exception;

    /**
     * 根据板卡序号获取对应的配置文件
     * @param hardwareno
     * @return
     */
    HardwareConfig findOne(String hardwareno);

    /**
     * 导入施工站台和板卡序列号
     * @param request 导入板卡信息
     */
    ApiResult importHardWare(HttpServletRequest request);

    /**
     * 获取站台目录数据
     * @return
     */
    List<CatalogModel> getHardWares();

    /**
     * 同步站台设备
     * @param hardwareuniqueno 设备序列号
     * @return
     */
    ApiResult hardwareSync(String hardwareuniqueno);

    List<DevHardwareStand> findDatas();

}